/**
 * 扫描器类
 */
export default class Scanner {
    constructor(templateStr) {
        this.templateStr = templateStr;
        // 指针
        this.pos = 0;
        this.tail = templateStr;
    }


    scan(tag){
        if(this.tail.indexOf(tag) == 0){
            // tag有多长，就让指针后移多少位
            this.pos += tag.length;
            // 尾巴也要改变，改变尾巴从当前指针这个字符串开始，到最后的全部字符串
            this.tail = this.templateStr.substring(this.pos)
        }
    }

    // 让指针进行扫描，直到遇见指定内容结束，并且能够返回结束之前路过的文字
    scanUtil(stopTag){
        // 记录一下执行本方法时候的pos值
        const pos_backup = this.pos;
        // 当尾巴的开头不是stopTag的时候，就说明还没有扫描到stopTag
        while (this.eso() && this.tail.indexOf(stopTag) != 0){
            this.pos ++;
            // 改变尾巴为当前指针这个字符开始，到最后的全部字符
            this.tail = this.templateStr.substring(this.pos);
        }

        return this.templateStr.substring(pos_backup,this.pos)
    }

    // 指针是否已经到头，返回布尔值
    eso(){
        return this.pos < this.templateStr.length;
    }
}
